<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>87_new运算符</title>
		<script>
			/* new运算符是创建对象时要使用的运算符
			-使用new时，到底发生了哪些事情:
				https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new
				
			-当使用new去调用一个函数时，这个函数将会作为构造函数调用，
				使用new调用函数时，将会发生这些事:
				1.创建一个普通的JS对象(Object对象{})，为了方便，称其为新对象。
				2.将构造函数的prototype属性设置为新对象的原型。
				3.使用实参来执行构造函数，并且将新对象设置为函数中的this。
				4.如果构造函数返回的是一个非原始值，则该值会作为new运算的返回值返回（千万不要这么做）。
					如果构造函数的返回值是一个原始值或者没有指定返回值，
					则新的对象将会作为返回值返回。
					通常不会为构造函数指定返回值
			 */

			function MyClass() {
				//var newInstance = {}
				//newInstance.__proto__ = MyClass.prototype

				return { name: "孙悟空" } //返回的是一个非原始值
			}

			var mc = new MyClass();//new运算的返回值 
			console.log(mc); //{name: '孙悟空'}
			
			

		</script>
	</head>
	<body>
	</body>
</html>